// Node.js中根据模块来源的不同,将模块分为了3大类,分别是:
// ●内置模块(内置模块是由Nodejs官方提供的，例如fs、path. http等)
// ●自定义模块(用户创建的每个js文件,都是自定义模块)
// ●第三方模块(由第三方开发出来的模块，并非官方提供的内置模块，也不是用户创建的自定义模块，使用前需要先下载)

// 1.加载内置的模块例如
// const fs = require('fs' )
// 2.加我用户的自定义模块
// const custom = require('./custom.js' )
// 3.加载第三方模块(关于第三方模块的下载和使用，会在后面讲解)
// const moment = require('moment' )

// 注意:使用require()方法加载其它模块时，会执行被加载模块中的代码。例：
const str = require('./js/a.js')

// 1.什么是模块作用域：
// 和函数作用域类似，在自定义模块中定义的变量、方法等成员,只能在当前模块内被访问，这种模块级别的访问限制，叫做模块作用域。

//2.优点：防止全局变量被污染

// 3.如果要使用导入进来的自定义模块就要在被导入的模块中使用module对象抛出 这里举例 ./js/b.js

const moduleB = require('./js/b.js')

console.log(moduleB);


// CommonJS规定:
// ①每个模块内部，module变量代表当前模块。
// ②module 变量是一个对象， 它的exports属性(即module.exports)是对外的接口。
// ③加载某个模块，其实是加载该模块的module.exports属性。require()方法用于加载模块。


